﻿
namespace LNet
{

    /// <summary>
    /// 通信内容包头键
    /// </summary>
    public enum PacketKey
    {
        #region LIXIGNJUN
        /// <summary>
        /// 为空
        /// </summary>
        None,

        Exam,
        Train,

        Login,

        /// <summary>
        /// 系统退出
        /// </summary>
        Exit,

        /// <summary>
        /// 请求任务表数据 服务器接收后返回jsonTask
        /// </summary>
        TaskTable,
        /// <summary>
        /// 请求岗位表数据
        /// </summary>
        PostTable,
        /// <summary>
        /// 请求区域表数据  对应场景
        /// </summary>
        AreaTable,
        /// <summary>
        /// 请求岗位任务关系表
        /// </summary>
        PostTaskTable,
        /// <summary>
        /// 请求专业表
        /// </summary>
        MajorTable,
        /// <summary>
        /// 请求项目表
        /// </summary>
        ProjectTable,

        /// <summary>
        /// 请求项目岗位表
        /// </summary>
        ProjectPostTable,

        /// <summary>
        /// 请求用户数据
        /// </summary>
        UserTable,

        #endregion

        #region LYM
        /// <summary>
        /// 修改密码
        /// </summary>
        ModifyPWD,

        /// <summary>
        /// 添加试卷 Paper
        /// </summary>
        AddPaper,

        /// <summary>
        /// 删除试卷
        /// 数据格式:List Int
        /// int:projectID
        /// </summary>
        DeletePaper,

        ModifyPaper,


        /// <summary>
        /// 管理固定操作卷中的任务 ---不用-20190930
        /// </summary>
        ManageTaskInPaper,

        /// <summary>
        /// 管理随机操作卷中的任务 
        /// </summary>
        ManageTaskInRandomPaper,


        #endregion


        /// <summary>
        /// 游戏 关于任务 房间等处理
        /// </summary>
        Game,

        /// <summary>
        /// 房间类协议
        /// </summary>
        Room,

        /// <summary>
        /// 角色数据
        /// </summary>
        Role,

        /// <summary>
        /// 任务操作
        /// </summary>
        TaskOperate,


        /// <summary>
        /// 请求学生表数据
        /// </summary>
        StudentTable,

        #region 游戏  Game

        /// <summary>
        /// 开始单人任务请求
        /// </summary>
        StartSingelTask,
        #endregion



        #region 模式
        /// <summary>
        /// 获取模式
        /// </summary>
        PatternGet,
        /// <summary>
        /// 教师设置模式 
        /// 数据格式:Int3String
        /// n1 TeacherId;
        /// n2 TrainingId;
        /// n3 ExamId;
        /// String Pattern
        /// </summary>
        PatternSet,
        #endregion

        #region Teacher 教员的详细功能定义
        /// <summary>
        /// 学员上线
        /// </summary>
        UserOnline,

        #endregion

        //开始学习 数据 学习任务ID
        StartLearn,

        /// <summary>
        /// 管理固定试卷中的试题
        /// </summary>
        ManageSubjectInPaper,
        /// <summary>
		/// 管理随机试卷中的试题
		/// </summary>
		ManageSubjectInRandomPaper,

        /// <summary>
        /// 获取考试试卷
        /// </summary>
        GetExamPaperByStudent,

        /// <summary>
        /// 理论交卷
        /// </summary>
        HandInTheoryExam,

        /// <summary>
        /// 操作题交卷
        /// </summary>
        HandInOperateExam,

        /// <summary>
        /// 管理考试学员
        /// </summary>
        ManageStudentInExam,

        RemoveStudentInExam,


        /// <summary>
        /// 获取考试成绩
        /// </summary>
        StudentExamDataTable,


        /// <summary>
        /// 学员获取自己相关的考试（未用，暂保留)
        /// </summary>
        GetExamByStudent,
        /// <summary>
        /// 启动项目，平台发送
        /// </summary>
        StartProject,

        Exchange,

        /// <summary>
        ///学员身份 转发数据 该协议服务器不会进行任何逻辑处理，只做转发功能 
        /// </summary>
        Transmit,

        /// <summary>
        /// 考试表
        /// </summary>
        ExamTable,
        /// <summary>
        /// 获取班级集
        /// </summary>
        ClassTable,
        /// <summary>
        /// 添加班级信息
        /// int0:专业id
        /// string:班级名称
        /// </summary>
        AddClass,
        /// <summary>
        /// 修改班级
        /// </summary>
        ModifyClass,
        /// <summary>
        /// 修改班级
        /// </summary>
        DeleteClass,

        /// <summary>
        /// 获取学生班级集
        /// </summary>
        StudentClassTable,
        /// <summary>
        /// 添加学生班级
        /// </summary>
        AddStudentClass,
        /// <summary>
        /// 删除学生班级
        /// </summary>
        DeleteStudentClass,
        /// <summary>
        /// 修改学生班级
        /// </summary>
        ModifyStudentClass,
        /// <summary>
        /// 获取试题集
        /// </summary>
        SubjectTable,
        /// <summary>
        /// 添加试题
        /// </summary>
        AddSubject,
        /// <summary>
        /// 删除试题
        /// </summary>
        DeleteSubject,
        /// <summary>
        /// 修改试题
        /// </summary>
        ModifySubject,
        /// <summary>
        /// 添加考试
        /// </summary>
        AddExam,
        /// <summary>
        /// 删除考试
        /// </summary>
        DeleteExam,
        /// <summary>
        /// 修改考试
        /// </summary>
        ModifyExam,

        /// <summary>
        /// 添加用户
        /// </summary>
        AddUser,
        /// <summary>
        /// 删除用户
        /// </summary>
        DeleteUser,
        /// <summary>
        /// 修改用户
        /// </summary>
        ModifyUser,

        /// <summary>
        /// 获取试卷集
        /// </summary>
        PaperTable,
        /// <summary>
        /// 获取所有固定理论卷试题集
        /// </summary>
        TheoryPaperDataTable,

        /// <summary>
        /// 获取所有随机理论卷试题集
        /// </summary>
        RandomTheoryPaperDataTable,
        /// <summary>
        /// 获取所有固定操作卷任务集
        /// </summary>
        OperatePaperDataTable,
        /// <summary>
        /// 获取所有操作卷任务集
        /// </summary>
        RandomOperatePaperDataTable,
        /// <summary>
        /// Unity端到与平台端相互调用
        /// </summary>
        InterInvoke,

        #region Unity与服务器通信
        /// <summary>
        /// 获取当前项目的操作考试列表 
        /// 数据：项目枚举
        /// </summary>
        GetOperateExamList,
        /// <summary>
        /// 获取操作卷中的任务列表
        /// </summary>
        GetTaskList,


        #endregion
        /// <summary>
        /// 根据当前项目的获取对应学员的理论考试列表
        /// </summary>
        GetTheoryExamList,

        /// <summary>
        /// 学员提交考试后，向教员广播提交的成绩
        /// </summary>
        BroadcastExamDataToTeacher,
        /// <summary>
        /// 教员刷新当前考试信息 考试id
        /// </summary>
        UpdateExamDataByID,

        /// <summary>
        ///设置实训单个任务时间
        /// </summary>
        SetTaskTime,
        /// <summary>
        /// 设置多个任务的时间
        /// </summary>
        SetAllTaskDefaultTime,
        /// <summary>
        /// 修改默认时间
        /// </summary>
        ResetTaskDefaultTime,

        /// <summary>
        /// 
        /// </summary>
        TrainDataTable,

        /// <summary>
        /// 找回密码
        /// </summary>
        RetrPassword,

        /// <summary>
        /// 试卷使用次数更新，服务器在收到 添加考试和更改考试时
        /// 
        /// 添加考试：直接 将所使用的试卷的使用次数 +1
        /// 修改考试： 将原来的和现在的对比，看是否更新
        /// 
        /// 最后广播一个使用次数信息出去，并将试卷id 和 新的次数作为参数
        /// 
        /// </summary>
        UpdatePaperUseCount,

        /// <summary>
        /// 获取实训错误率的统计数据
        /// </summary>
        GetTrainErrorRateStat,

        /// <summary>
        /// 更新试题使用次数
        /// </summary>
        UpdateSubjectUseCount,

        /// <summary>
        /// 添加学生信息
        /// 旧版本添加学生信息方式：分别发送了添加用户和班级、不好维护
        /// 新版本：通过事务处理，同时执行两个操作
        /// </summary>
        AddStudent,

        /// <summary>
        /// 心跳包包头
        /// </summary>
        HeartBeat,

        /// <summary>
        /// 同步时间
        /// </summary>
        SyncTime,

        /// <summary>
        /// 学生查询自己某一理论考试记录
        /// </summary>
        StudentTheoryLog,

        /// <summary>
        /// 获取在线用户(管理员在在线管理模块中使用)
        /// </summary>
        GetOnlineUsers,

        /// <summary>
        /// 管理员端发起请求某个账号下线（管理员在线管理模块中使用）
        /// </summary>
        AdminAccountOffline,

        /// <summary>
        /// 强制下线账号（由服务器发送，非管理员端接收，接收后直接退出，不提示）
        /// </summary>
        ForceAccountOffline

    }

}

